let fs = require('fs');
//flag是一个标识位,你将要对这个文件进行何种操作,读写...
fs.readFile('6.fs/1.txt', { encoding: "utf8", flag: 'r' }, function(err, data) {
  if (err) {
    console.log(err);
  } else {
    console.log(data);
  }
})
//unlinkSync
// fs.unlink('6.fs/1.txt', (err) => {
//   if (err) throw err;
//   console.log('6.fs/1.txt');
// });
// r :读取
// w : 写入
// s: 同步 Sync
// +: 增加相反操作
// x: 排他操作
//r+ : 读取并写入
//rs: 同步读取文件并忽略缓存
//w: 写入文件,不存在则创建,存在则清空
///w+:读取并写入文件,不存在创建,存在则清空
//wx: 排他写入文件
//a: 追加写入
// r+ w+
// 当文件不存在时,r+不会创建,二回导致调用失败,但是w+会创建
// 如果文件存在,r+不会自动清空文件,但w+会自动吧已有的文件的内容清空
//mode: 666 可读可写可执行 linux的权限位
// fs.writeFile('6.fs/2.txt', '和榆树', { encoding: "utf8", flag: 'a', mode: 0o666 }, function(err) {
//   if (err) {
//     console.log(err);
//   }
// })
// fs.appendFile
//他们都是把文件当成一个整体来操作,当文件特别大的,大于内存的是无法执行这样的操作的
// 精确控制读取的字节数
//fd 文件描述符
//0 标准输入 1 标准输出 2错误输出
fs.open('6.fs/2.txt', 'r', 0o666, function(err, fd) {
  console.log(fd);
  var buff = Buffer.alloc(3);
  // buff--0开始索引 3--读取字节数 0--文件的读取位置
  fs.read(fd, buff, 0, 3, 0, function(err, bytesRead) {
    console.log(buff.toString());
  })
})
console.log('hello');
// process.stdout.write('hello');
// console.error("wrong");
// process.stderr.write('hello');
//w是清空并写入
fs.open('6.fs/2.txt', 'a', 0o666, function(err, fd) {
  console.log(fd);
  // buff--0开始索引 3--读取字节数 0--文件的读取位置
  fs.write(fd, Buffer.from("1何玉硕1"), 0, 11, 9, function(err, bytesRead) {
    console.log(bytesRead);
  }) 
})